package com.easy.controller;

import com.easy.bean.Employees;
import com.easy.common.CommonResult;
import com.easy.dao.IEmployeesDao;
import com.easy.service.IEmployees;
import com.easy.util.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


import java.util.HashMap;
import java.util.List;

@RestController
@CrossOrigin
public class EmployeesController {
    // 使用 @Autowired 注解自动装配一个 IEmployeesDao 接口的实现类实例到 dao 变量中。
// IEmployeesDao 接口通常定义了与数据库交互的方法，例如添加、查询员工信息等。
   @Autowired
    IEmployeesDao dao;

    // 使用 @Autowired 注解自动装配一个 IEmployees 接口的实现类实例到 easyS 变量中。
// IEmployees 接口通常定义了更高层次的业务逻辑方法，例如获取员工信息等。
   @Autowired
   IEmployees easyS;

   //查询
    @GetMapping("searchemployees")
    public CommonResult getSearchEmployees(Employees employees, Page page){
        // 使用 @Autowired 注解自动装配一个 IEmployees 接口的实现类实例到 easyS 变量中。
        // IEmployees 接口通常定义了更高层次的业务逻辑方法，例如获取员工信息等。
        List<Employees> list=easyS.getSearchEmployees(employees,page);
        // 调用 easyS 中的 getCount 方法，传入 Employees 对象，
        // 该方法用于计算满足条件的员工总数。
        int count=easyS.getCount(employees);

        HashMap map=new HashMap();
        // 将查询到的员工列表放入 HashMap 中，键为 "list"
        // 将员工总数放入 HashMap 中，键为 "count"。
        map.put("list",list);
        map.put("count",count);
        // 返回一个成功的 CommonResult 对象，其中包含封装好的数据（员工列表和总数）。
        return CommonResult.success(map);
    }

   @PostMapping("employees")
    public String addEmployees(Employees employees){
        dao.addEmployees(employees);
        return "添加成功";
    }

    //添加
    @PostMapping("employeesjson")
    public CommonResult addEmployeesJson(@RequestBody Employees employees){
        // 调用 dao 中的 addEmployees 方法，传入从请求体中获取的 Employees 对象，
        // 该方法用于将新的员工记录添加到数据库中。
        dao.addEmployees(employees);
        // 调用 easyS 中的 getEmployees 方法，传入刚刚添加的员工的 ID，
        // 该方法用于从数据库中检索该员工的详细信息。
       employees =easyS.getEmployees(employees.getId());
        // 返回一个 CommonResult 对象，表示操作成功，并携带新添加的员工对象作为数据。
        return CommonResult.success(employees);
    }

//    @DeleteMapping("del1/{id}")
//    public String delEmployees(@PathVariable int id){
//       dao.delEmployees(id);
//       return "删除成功";
//    }
    @PutMapping("edit1")
    public String editEmployees(Employees employees){
       dao.editEmployees(employees);
       return "修改成功";
    }

    @GetMapping("employees")
    public CommonResult getSearchEmployees(Employees employees){
        // 调用 dao 中的 getSearchEmployees 方法，传入 Employees 对象，执行搜索员工的操作并返回匹配的员工列表。
        // 返回一个成功的 CommonResult 对象，其中包含查询到的员工列表。
       List<Employees> list=dao.getSearchEmployees(employees);
       return CommonResult.success(list);
    }
    //删除
    @DeleteMapping("employees/{id}")
    public CommonResult delEmployees(@PathVariable int id){
        //调用 easyS 中的 delGuests 方法，传入从 URL 中获取的 id 参数，
        // 该方法用于删除指定 ID 的客人信息，并返回受影响的行数。
       int count= easyS.delEmployees(id);
        // 如果 delGuests 方法返回的 count 大于 0，表示删除成功，
        // 此时返回一个 CommonResult 对象，表示操作成功，并携带 count 作为额外信息。
       if (count>0){
           return CommonResult.success(count);
       }else{
           // 如果 count 不大于 0，表示删除失败或未找到指定 ID 的客人信息，
           // 此时返回一个 CommonResult 对象，表示操作失败。
           return CommonResult.fail();
       }
    }

//修改
    @PutMapping("employeesjson")
    public CommonResult editEmployeesJson(@RequestBody Employees employees){
        int count=easyS.editEmployees(employees);

        employees=easyS.getEmployees(employees.getId());
        return CommonResult.success(employees);
    }

    //映射
    @GetMapping("staffAndUser")
    public CommonResult getStaffUser(String checktext){
        List<Employees> list=dao.getEmployeesAndUSer();
        return CommonResult.success(list);
    }
}
